module storage.attached { export class LocalStorageStorage implements AttachedStorage { private _uniqueKey: string,
private _localStorage: typeof localStorage) { getNames(callback: (error: Error, names: string[]) => void) { var names: string[] = [];
for (var i = 0; i < this._localStorage.length; i++) { var key = this._localStorage.key(i);
if (!startsWith(key, this._uniqueKey)) continue;
key = key.slice(this._uniqueKey.length);
populate(name: string, obj: any, callback: (error: Error) => void) { var prefix = (this._uniqueKey || '') + name;
for (var k in obj) if (obj.hasOwnProperty(k)) { obj[k] = this._localStorage.getItem(key);
update(name: string, obj: any, callback: (error: Error) => void) { var prefix = (this._uniqueKey || '') + name;
for (var k in obj) if (obj.hasOwnProperty(k)) { this._localStorage.removeItem(key);
this._localStorage.setItem(key, value);
export module LocalStorageStorage { export function detect(uniqueKey: string, callback: (error: Error, storage: AttachedStorage) => void, windowOverride = window) {